package dao;

import java.io.Serializable;
import java.util.List;

import modelo.Caracteristicaxsalon;
import modelo.Estadoinvitado;
import modelo.Estadousuario;
import modelo.Invitado;
import modelo.Propietario;
import modelo.Salon;
import modelo.Tiposuscripcion;
import modelo.Usuario;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import util.HibernateUtil;

public class InvitadosDao implements Serializable {

	private static final long serialVersionUID = 8160657628098831474L;
	private Session session;
	SessionFactory sessionFactory = HibernateUtil.getSessionFactory();

	public InvitadosDao() {
		super();
	}

	public InvitadosDao(Session session, SessionFactory sessionFactory) {
		super();
		this.session = session;
	}

	public List<Invitado> obtenerInvitado() {
		session = sessionFactory.openSession();

		Query query = session.createQuery("SELECT i FROM Invitado i");
		List<Invitado> i = query.list();

		session.close();

		return i;
	}
		
		public Invitado obtenerInvitadoById(int id) {
		session = sessionFactory.openSession();
		Query query = session.createQuery("from Invitado where IdInvitado = :id ");
		query.setParameter("id", id);

		List<?> list = query.list();

		Invitado i = (Invitado) list.get(0);
		return i;
	}
		
		public void guardarInvitado(Invitado i){
			session=sessionFactory.openSession();
			session.beginTransaction();
			session.saveOrUpdate(i);
			session.getTransaction().commit();
			session.close();
		}

		public void eliminarInvitado(Invitado i) {
			session=sessionFactory.openSession();
			session.beginTransaction();
			session.delete(i);
			session.getTransaction().commit();
			session.close();
		}
		
		public void modificarInvitado(Invitado i, Estadoinvitado e) throws Exception
		{
			Transaction transaction = null;
						
			try{
				
				session = sessionFactory.openSession();
		        transaction=session.beginTransaction();	
		        
		        i.setEstadoinvitado(e);
			    session.update(i);
		        
		        transaction.commit();
		        
		       } catch (Exception e2) {
		            //Error
		            if (transaction != null) {
		                transaction.rollback();
		                throw e2;
		              }
		        } finally { 
		            session.close();
		        }
		}
		

}